import { request } from '@/service/request';

// ---------- RecycleResidual Begin ----------

/** get RecycleResidual list */
/**
 * 获取DM回收站用户分页数据
 *
 * @param params 可选的参数对象，类型为Api.Dimo.DmRecycleResidualSearchParams
 * @returns 返回Api.Dimo.DmRecycleResidualList类型的数据
 */
export function fetchGetDmRecycleResidualPage(params?: Api.Dimo.DmRecycleResidualSearchParams) {
  return request<Api.Dimo.DmRecycleResidualList>({
    url: '/dm_residual/page',
    method: 'GET',
    params
  });
}

/**
 * 获取当前用户的组织信息
 *
 * @param params 查询参数（可选）
 * @returns 返回用户组织信息
 */
export function getResidualOrgInfo(params?: Api.Dimo.RecycleSearchParams) {
  return request<Api.Dimo.RecycleCode>({
    url: '/dm_residual/currentResidualOrgInfo',
    method: 'GET',
    params
  });
}

/**
 * 获取回收站中的用户信息
 *
 * @param id 用户ID
 * @returns 返回Api.Dimo.Company类型的接口响应数据
 */
export function fetchGetDmRecycleResidual(id: string) {
  return request<Api.Dimo.Company>({
    url: `/dm_residual/${id}`,
    method: 'GET'
  });
}

/**
 * 获取当前用户的组织信息
 *
 * @param params 查询参数（可选）
 * @returns 返回用户组织信息
 */
export function getRecycleOrgInfo(params?: Api.Dimo.RecycleSearchParams) {
  return request<Api.Dimo.RecycleCode>({
    url: '/dm_residual/currentUserOrgInfo',
    method: 'GET',
    params
  });
}

export function fetchAddDmRecycleResidual(data: Api.Dimo.DmRecycleResidualEdit) {
  return request<boolean>({
    url: '/dm_residual/',
    method: 'POST',
    data
  });
}

/** update RecycleResidual info */
export function fetchUpdateDmRecycleResidual(data: Api.Dimo.DmRecycleResidualEdit) {
  return request<boolean>({
    url: '/dm_residual/',
    method: 'PUT',
    data
  });
}

/** edit delete RecycleResidual */
/**
 * 删除DM回收站用户
 *
 * @param data 删除参数
 * @returns 删除操作是否成功
 */
export function fetchDeleteDmRecycleResidual(data: Api.Common.DeleteParams) {
  return request<boolean>({
    url: '/dm_residual/',
    method: 'DELETE',
    data
  });
}

/** auth */
/**
 * 获取授权回收用户
 *
 * @param id 用户ID
 * @param status 用户状态
 * @returns 布尔值，表示请求是否成功
 */
export function fetchAuthDmRecycleResidual(data: { id: string; status: string; authRejectReason: string }) {
  return request<boolean>({
    url: `/dm_residual/auth`,
    method: 'PUT',
    data
  });
}

// 导出

export function fetchAuthDmRecycleExport(data: Api.Dimo.DmExportParams) {
  return request<boolean, 'blob' | 'json'>({
    url: `/dm_residual/export_data`,
    method: 'POST',
    data,
    responseType: 'blob'
  });
}
